1、获取文件/目录属性
	获取文件/目录属性
	lstat函数类似于stat，不同之处在于如果路径名是符号链接，则它返回关于链接本身的信息，而不是它所引用的文件
	pathname: 文件/目录路径
	fd: 文件描述符
	buf: 属性
	成功返回0，失败返回-1
	int stat(const char *pathname, struct stat *buf);
	int fstat(int fd, struct stat *buf);
	int lstat(const char *pathname, struct stat *buf);
2、文件属性结构体
	struct stat {
		dev_t     st_dev;         /* 文件的设备编号 */
		ino_t     st_ino;         /* 节点  */
		mode_t    st_mode;        /* 文件的类型和权限 */
		nlink_t   st_nlink;       /* 连到该文件的硬连接数目，刚建立的文件值为1 */
		uid_t     st_uid;         /* 用户ID */
		gid_t     st_gid;         /* 组ID */
		dev_t     st_rdev;        /* 若此文件为设备文件，则为其设备编号 */
		off_t     st_size;        /* 文件字节数 */
		blksize_t st_blksize;     /*  */
		blkcnt_t  st_blocks;      /*  */
	
		struct timespec st_atim;  /* 最后一次访问时间 */
		struct timespec st_mtim;  /* 最后一次修改时间  */
		struct timespec st_ctim;  /* 最后一次改变时间(指属性)  */
	};
	文件类型
	S_IFMT		文件类型掩码
	S_IFSOCK	scoket 
	S_IFLNK		符号连接 
	S_IFREG	 	一般文件 
	S_IFBLK		块设备
	S_IFDIR		目录 
	S_IFCHR		字符设备 
	S_IFIFO		FIFO(管道)
	文件类型断言
	S_ISREG(m)  一般文件?	
	S_ISDIR(m)  目录?	
	S_ISCHR(m)  字符设备?
	S_ISBLK(m)  块设备?
	S_ISFIFO(m) FIFO(管道)?
	S_ISLNK(m)  符号连接?
	S_ISSOCK(m) socket?
	文件权限
	S_IRWXU	文件所有者的掩码
	S_IRUSR	文件所有者具可读取权限
	S_IWUSR	文件所有者具可写入权限
	S_IXUSR	文件所有者具可执行权限
	S_IRWXG	用户组的掩码
	S_IRGRP	用户组具可读取权限
	S_IWGRP	用户组具可写入权限
	S_IXGRP	用户组具可执行权限
	S_IRWXO	其他用户的掩码
	S_IROTH	其他用户具可读取权限
	S_IWOTH	其他用户具可写入权限
	S_IXOTH	其他用户具可执行权限

补充：
3、获取用户登录信息
	获取用户登录信息
	name: 用户名
	uid: 用户ID
	成功返回passwd，失败返回NULL
	struct passwd *getpwnam(const char *name);
	struct passwd *getpwuid(uid_t uid);
	struct passwd {
		char   *pw_name;       /* 用户名 */
		char   *pw_passwd;     /* 用户密码 */
		uid_t   pw_uid;        /* 用户ID */
		gid_t   pw_gid;        /* 组ID */
		char   *pw_gecos;      /* 用户信息 */
		char   *pw_dir;        /* home目录 */
		char   *pw_shell;      /* shell参数 */
	};
4、获取用户组信息
	获取用户组信息
	name: 组名称
	gid: 组id
	成功返回group，失败返回NULL
	struct group *getgrnam(const char *name);
	struct group *getgrgid(gid_t gid);
	
	struct group {
		char   *gr_name;        /* 组名 */
		char   *gr_passwd;      /* 组密码 */
		gid_t   gr_gid;         /* 组ID */
		char  **gr_mem;         /* 指向组成员名称，以NULL结尾 */
	};
